package com.aliyun.oss;

import lombok.Data;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.io.InputStream;
import java.util.UUID;

/**
 * 阿里云 OSS 工具类
 */
@Data
public class AliOSSUtils {
//    @Value("${aliyun.oss.endpoint}")
//    private String endpoint;
//    @Value("${aliyun.oss.accessKeyId}")
//    private String accessKeyId;
//    @Value("${aliyun.oss.accessKeySecret}")
//    private String accessKeySecret;
//    @Value("${aliyun.oss.bucketName}")
//    private String bucketName;

    private AliOSSUtilsPropertiesPojo aliOSSUtilsPojo;//封装了阿里云OSS的相关配置信息的实体类对象


    /**
     * 实现上传图片到OSS
     */
    public String upload(MultipartFile file) throws IOException {
        // 1.获取上传的文件的输入流
        InputStream inputStream = file.getInputStream();

        //2.避免文件覆盖,给上传的文件重命名
        String originalFilename = file.getOriginalFilename();//获取上传文件的源文件名
        String fileName = UUID.randomUUID().toString() + originalFilename.substring(originalFilename.lastIndexOf("."));//UUID+文件扩展名

        //3.上传文件到 OSS
        OSS ossClient = new OSSClientBuilder().build(aliOSSUtilsPojo.getEndpoint(), aliOSSUtilsPojo.getAccessKeyId(), aliOSSUtilsPojo.getAccessKeySecret());//构建阿里云OSS客户端
        ossClient.putObject(aliOSSUtilsPojo.getBucketName(), fileName, inputStream);//上传文件到OSS的指定存储桶中

        //4.拼接文件访问路径
        /*拼接上传文件的url地址,效果例子:https://my-bucket-liufubiao.oss-cn-fuzhou.aliyuncs.com/9a4e7e46-0123-4922-98e7-7952afe45115IMG.png*/
        String url = aliOSSUtilsPojo.getEndpoint().split("//")[0] + "//" + aliOSSUtilsPojo.getBucketName() + "." + aliOSSUtilsPojo.getEndpoint().split("//")[1] + "/" + fileName;

        //5.关闭ossClient
        ossClient.shutdown();

        //6.把上传到oss的路径返回,存放到数据库中
        return url;
    }

}
